﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Biciq.Datos;
using System.Linq;

namespace Biciq.Silverlight.UI
{
    public class SeguimientoVistaModelo:VistaModeloBase
    {
        #region Constructores
        
       
        public SeguimientoVistaModelo(VistaBicicleta bicicleta)
        {
            Bicicleta = bicicleta;
            MostrarCliente = Visibility.Collapsed;
            MostrarBicicleta = Visibility.Visible;
            Indice = 1;
            if (bicicleta.ColorAviso=="Red" || bicicleta.ColorAviso=="Orange" || bicicleta.ColorAviso=="Green")
            {
                MostrarCliente = Visibility.Visible;
                Indice = 0;
                IdCliente = bicicleta.IdCliente.Value;
                CargarCliente();
            }
            CargarBicicleta();

        }


        public SeguimientoVistaModelo(Guid IdBicicleta)
        {
            
            MostrarCliente = Visibility.Collapsed;
            MostrarBicicleta = Visibility.Visible;
            Indice = 1;

            BicicletaVistaModelo = new HistoriaBicicletaVistaModelo(IdBicicleta);

        }

        public SeguimientoVistaModelo(Guid idCliente, bool verCliente)
        {
            
            MostrarCliente = Visibility.Collapsed;
            MostrarBicicleta = Visibility.Visible;
            Indice = 0;

            IdCliente = idCliente;
            CargarCliente();

        }
        public SeguimientoVistaModelo(Cliente cliente)
        {
            
            MostrarCliente = Visibility.Visible;
            MostrarBicicleta = Visibility.Collapsed;
            Indice = 0;
            IdCliente = cliente.Id;
            CargarCliente();
            
           

        }
        #endregion
        
        #region Métodos Privados
        private void CargarBicicleta()
        {
            BicicletaVistaModelo = new HistoriaBicicletaVistaModelo(Bicicleta.IdBicicleta);

        }
        private void CargarCliente()
        {
            
            ClienteVistaModelo = new SeguimientoClienteVistaModelo(IdCliente);
           
        }
        #endregion
       
        #region Campos
        private Visibility _mostrarCliente;

        private Visibility _mostrarBicicleta;



        private VistaBicicleta _bicicleta;

        private SeguimientoClienteVistaModelo _clienteVistaModelo;
        private SeguimientoChildVista _clienteVista;
        private HistoriaBicicletaVistaModelo _bicicletaVistaModelo;

       
        private int _indice;
        private Guid _idCliente;

       

        
       
      
        

        #endregion

        #region Propiedades

        public HistoriaBicicletaVistaModelo BicicletaVistaModelo
        {
            get { return _bicicletaVistaModelo; }
            set 
            { 
                _bicicletaVistaModelo = value;
                RaisePropertyChanged("BicicletaVistaModelo");
            }
        }

        public Guid IdCliente
        {
            get { return _idCliente; }
            set 
            { 
                _idCliente = value;
                RaisePropertyChanged("IdCliente");
            }
        }


        public Visibility MostrarBicicleta
        {
            get { return _mostrarBicicleta; }
            set 
            { 
                _mostrarBicicleta = value;
                RaisePropertyChanged("MostrarBicicleta");
            }
        }

        public int Indice
        {
            get { return _indice; }
            set
            { 
                _indice = value;
                RaisePropertyChanged("Indice");
            }
        }

        public SeguimientoClienteVistaModelo ClienteVistaModelo
        {
            get { return _clienteVistaModelo; }
            set 
            {
                _clienteVistaModelo = value;
                RaisePropertyChanged("ClienteVistaModelo");
            }
        }

        public Visibility MostrarCliente
        {
            get { return _mostrarCliente; }
            set 
            { 
                _mostrarCliente = value;
                RaisePropertyChanged("MostrarCliente");
            }
        }

        public VistaBicicleta Bicicleta
        {
            get { return _bicicleta; }
            set
            {
                _bicicleta = value;
                RaisePropertyChanged("Bicicleta");
            }
        }

        #endregion
    }
}
